查看原文
其他

云原生关键技术分析与云盘对象存储的实践

黎伟健 中移科协 2023-02-13

点蓝色字关注“中移科协


一、云原生的技术体系概述


云原生是一套指导进行软件架构设计的思想,其为用户提供了一条敏捷、可扩展、可复制、最大化地利用云能力、发挥云价值的最佳路径。按照云原生思想而设计出来的软件天然就“生在云上,长在云上”,使得我们开发的软件和“云”能够天然地集成在一起,发挥出“云”的最大价值。


云原生的基础架构包括配置层(Provisioning Layer)、运行时层(Runtime Layer)、编排和管理层(Orchestration and Management Layer)、应用定义和开发层(Application Definition and Development Layer)、跨所有层运行的工具(可观察性与分析Observability and Analysis、平台Platforms)等。



配置层是构建云原生应用程序基础所涉及的工具。它包含了从自动化基础结构的创建,管理和配置到扫描,签名和存储容器镜像等内容。包括自动化和配置工具、容器注册表、安全和合规框架、密钥管理解决方案等。


运行时层是应用程序运行涉及的工具。运行时层提供了虚拟化磁盘、网络、系统、安全等资源。


编排和管理层处理所有容器化服务(应用程序组件)如何作为一个组进行管理。他们需要确定其他服务,相互通信并进行协调。包括编排和调度、协调和服务发现、远程过程调用、服务代理、API网关、服务网格。


应用程序定义和开发层侧重于让工程师能够构建应用程序并使其运行的工具。包括数据库、流和消息、应用程序的定义和镜像构建、持续集成和交付(CI/CD)。


Kubernetes项目是整个“云原生”理念落地的核心与关键所在。Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes拥有一个庞大且快速增长的生态系统,其服务、支持和工具广泛可用。其实主要架构如下图:



二、云原生的优势与挑战


目前在笔者所工作的通信行业内,技术架构仍然以传统技术架构为主、技术选型依赖于oracle等传统软件,部分业务仍然采用传统IDC做为基础设施,已经不符合业界发展趋势,并陆续开始结合目前业界技术趋势进行技术架构重构,例如微服务化、整合云端后台服务迁移过渡等。



但是,对大规模业务系统而言,迁移不可能一步完成,整个迁移过程会较为漫长,在过程中系统是处在一种混合状态,例如:既有运行在容器中的微服务,也有在容器外运行的,甚至是运行在传统非云基础设施上的服务。所以,这种混合状态会对开发和维护提出更高的挑战,新迁移系统和遗留系统的互通,分布的迁移过程都要通过精心的设计。


在业务上云后,业务系统的部署架构将更加复杂,涉及到云上服务、本地服务以及跨云服务等。因此,业务部署架构复杂度将大幅提升、排障将更加困难、将给系统运营维护更高要求;同时,随着数据量快速增长与5G发展,中远期将出现更多的基于AI技术的业务场景,而当前我们对AI技术积累较为基础、预研不足,且在底层资源上对AI服务器等需求提出与配置均缺少前瞻性,更多的聚焦当下需求。因此企业产品业务上云后,主要存在以下优势和挑战:


2.1引入云原生计算的优势

(1)改变服务交付的速度:来自互联网行业的冲击正在改变着电信行业的格局,领先的电信运营商已经意识到这种危机并且积极寻求转型,而大多数主流运营商想要将自己转变为数字服务提供商,并希望能够像互联网竞争对手那样快速地提供新的基于软件的服务,云原生计算为这种转变提供了重要技术路径。


(2)响应新需求、创造新收入:云原生计算能够支持层出不穷的新需求,如智能家居、智能仪表、智慧城市等物联网(IoT)服务,增强现实(AR)、虚拟现实(VR)以及包括健康、工业控制、公共安全等面向特定垂直行业的5G网络切片。由于各种应用场景在带宽和时延方面的要求差异很大,电信运营商不可能创建多个独立的物理网络,因此需要找到一种经济可行的方法为每个用例定制网络,云原生虚拟化网络支持自动生成虚拟网络切片,并能够根据特性匹配特定场景。


(3)改变网络运维的成本:作为相较传统基于虚拟机的虚拟化方案,云原生通过高度自动化运维提供更高效的部署和管理方式,容器化、微服务和自动编排等功能,可以实现超高水平的资源利用率以及更快的部署、扩展和恢复实现成本效益最大化。



2.2引入云原生计算的挑战

(1)容器潜在的安全风险和不成熟的容器生态。由于同一主机系统上所有容器都依赖同一个内核操作系统,因此容器的隔离更加困难,故障或攻击可能快速扩散到共享相同内核的所有其他容器。容器化技术尚未经过已应用于Hypervisor和OpenStack 的NFV特定开发,如支持强化平台感知特性(如SR-IOV和DPDK)和电信级网络功能。SR-IOV是一种目前在基于虚拟机的NFV部署中广泛使用的技术,通过直接访问网络硬件来提高网络性能,而在容器中添加对R-IOV的支持则会显著影响网络性能。


(2)云原生缺乏具体用例的方法。虽然CNCF定义了云原生相关术语并提出了一系列措施,但是由于不同行业的业务需求和风险偏好不同,并没有一种云原生计算能够匹配所有需求的用例。例如,微服务的大小没有标准定义,对于电信网元,也许更重要的是“无状态”而不是“小”,在基于服务化架构的5G核心网中,一个网络功能可以是一个微服务,也可以由若干微服务组成,对于NFV的微服务化尚需探索。


(3)以云原生的思维方式开发/运营维护VNF给运营商带来的挑战。以云原生的思维方式开发/运营维护VNF还需要一系列管理措施,如DevOps方法、持续集成、自动化测试、工具链和自动化反馈回路等,以支持VNF缩放和修复。云原生计算能力和网络服务的自动化运营需要与当今电信运营商完全不同的组织架构和专业能力。云原生是电信运营商转型的重要驱动因素,电信运营商面临技术和管理的同步挑战,需要面向DevOps结合现状和目标变革自身架构。


三、云盘业务采用对象存储

的好处与部署经验


海量存储技术是云原生要解决的重点问题之一,云盘业务是少量存储的典型业务场景,因此解决云盘的海量存储问题对云原生存储问题的分析有较为重要的意义。云原生提供了多种存储技术,在发挥云原生存储技术优势,规避短处方面,同时有效解决业务问题方面,笔者团队经过多年实践积累一些经验,本文将以云盘进行相关阐述。


众所周知,存储技术按照类型大致分为五类:NAS、IPSAN、块存储、文件存储、对象存储。其中,对象存储(Cloud Object Storage,COS)是无目录层次结构、无数据格式限制、可容纳海量数据、且支持HTTP/HTTPS协议访问的分布式存储服务,它也可以直接被称为“云存储”。


对象存储不像文件系统那样有一个很多层级的文件结构,而是只有一个“桶”(bucket)的概念(也就是存储空间),“桶”里面全部都是对象,是一种非常扁平化的存储方式,它的拥有者还可以通过REST API的方式访问其中的对象。因此,对象存储最主流的使用场景,就是存储海量的非结构化内容,例如视频、音乐、图片、文件、软件安装包等。


对象存储是在网络传输的基础上使用元数据系统,将传输的数据信息分离出元数据信息,存有存储的文件目录,数据内容,块位置等信息。以元数据为单位,可以多块并行的写入或访问数据。对象存储核心是将数据通路(数据读或写)和控制通路(元数据)分离,并且基于对象存储设备构建存储系统;同时兼有SAN高速直接访问磁盘特点及NAS的分布式共享特点。


而云盘业务,是面向终端用户提供文件存储服务,又可基于文件存储服务提供丰富多彩的增值服务,用户UGC内容的海量存储是本系统的最基本能力,为此,文件存储如果采用对象存储,能够达到易扩容、高性能、低成本的存储要求,同时具备高可靠、安全等特性,通过标准接口提供非结构化数据(图片、音视频、文本等格式文件)的无限存储服务。而且,通过对象云存储,可灵活的实现线上音频视转码,智能相册,在线云解压等相关功能,将原来需要在本地客户端执行的任务通过云端进行,使传统本地业务在云端落户。


另外,在笔者的工作经历中,曾经负责云盘项目的质量控制,因此总结了云盘改造经验:


(1)逐步改造,同时兼容新旧平台:根据用户名单、文件格式、文件大小阈值、客户端分片要求等条件,灵活选择对象云存储与文件存储。


(2)重视测试:保障对象存储在云盘平台上线安全可靠,在对象存储上线前安排了性能压力测试,以验证对象存储性能上是否能够满足云盘业务要求。在测试过程中,独立部署云盘核心业务组建,网络与生产环境隔离,防止影响生产环境。


(3)确保业务功能不受影响:功能测试验证在灰度+对象存储白名单环境下进行,全部功能端到端测试验证。要保证客户端全覆盖、业务功能全覆盖、业务场景全覆盖。


(4)遇到阻碍:在改造过程中遇到分片上传对象存储报错,同时小规模影响业务正常表现。解决方案:用户文件先上传至云盘文件存储,再用异步方式并通过分片上传至对象存储,云盘APP分片上传至云盘,云盘通过对象存储SDK透传至对象存储。


四、云原生技术安全架构风险

及解决方案


云原生凭借着弹性、敏捷、资源池和服务化等特性,解决了业务在开发、集成、分发和运行等整个生命周期中遇到的问题。云原生环境中,应用由传统的单体架构转向微服务架构,云计算模式也相应的从基础设施即服务转向为容器即服务和函数即服务。应用架构和云计算模式的变革可能会导致进一步的风险。


风险1:传统的边界安全模型在动态变化的云原生环境难适用

云原生环境中应用微服务化大幅增加了内部网络流量和服务通信端口总量,同时承载负载的容器秒级启动或消失的动态变化,增加了安全监控和保护的难度,传统防火墙基于固定IP的安全策略很难适应这种持续的动态变化,无法准确捕捉容器间的网络流量和异常行为。


风险2:容器共享操作系统的进程级隔离环境增加逃逸风险

传统软件架构下,应用之间通过物理机或虚拟机进行隔离,从安全角度来看可以将安全事件的影响限制在有限可控的范围内。在云原生环境下,多个服务实例共享操作系统,一个存在漏洞服务被攻陷可能会导致运行在同主机上其他服务受到影响,逃逸风险大大提高。



风险3:频繁变更对软件流转的全链条安全提出新要求

为提高数字业务应用交付与运维效率,企业应用开发与运维部门引入开发运营一体化流程。每个微服务应用会涉及相对独立的开发、测试和部署的全生命周期,并通过持续集成/持续交付的流水线,将应用部署运行在开发测试和生产环境中。在整个业务应用全生命周期中,需要为各个环节引入自动化安全保护,不仅避免各个环节的潜在风险,而且提高应用安全交付效率。


风险4:应用微服务化大幅增加攻击面

容器技术保证了运行环境的强一致性,为应用服务的拆分解耦提供了前提,应用微服务化进程加速,同时也带来新的安全隐患。单体应用拆分导致端口数量暴增,攻击面大幅增加。微服务将单体架构的传统应用拆分成众多个服务,应用间交互的端口成指数级增长,相较于单体应用架构集中在一道口防护的简单易行,微服务化应用在端口防护、访问权限、授权机制等方面的难度陡增。



解决方案:《网络安全法》提出“网络安全三同步”的概念,明确了关键信息基础设施安全建设的要求。云原生技术作为云计算基础设施的关键和新常态,为了保障云原生平台、用户及云原生产品的安全运行,需在云原生安全的规划、建设和使用阶段持续贯彻落实该三同步要求。


(1)在项目规划阶段,同步考虑并规划云原生安全设施建设需求,包括需要的云原生平台、用户及云原生产品的安全技术保障能力和如何建设原生安全管理平台等,以确保云原生安全成为云原生系统的有机组成;


(2)在项目建设阶段,需要从云原生建设的各个方面引入并融合安全能力,并确定各方的安全责任,确保云原生安全设施严格按照规划设计要求进行同步建设,上线验收时确保云原生系统和产品通过安全风险评估或符合等保要求;


(3)在项目使用阶段,确保云网的所有环节都充分对接,确保云安全设施正常运行、云上安全识别、监测、处置的各项流程贯通,一旦发生安全事件也能迅速处置和响应。


五、利用区块链技术

实现跨单位的云化协同手段


目前全世界各公司都在进行云化部署,并且慢慢向云原生方向转变。之所以大家分别各自造轮子,一方面是由于基础设施对企业尤其是集团化的大企业非常重要,另一方面也是由于如此关键的基础设施如果掌握在他人手中,在上面部署任何应用都无法做到完全放心,因此无论是国外的谷歌、微软、亚马逊,还是国内的BAT、运营商都在建设自己的云化方案。这样处理,同样也有一定的弊端,主要是各公司重复建设类似的东西,无论是系统的成熟度还是建设进度都较差;同时还存在着生态不统一,第三方厂商接入也需要遵循不同的标准。解决此问题的关键是互企业的互信问题,在信任的基础上,技术、合作方式等方面问题就迎刃而解,从而实现共享共建,集中力量打通生态。解决信任问题目前最强的利器就是区块链,而区块链本身也一定的缺陷,主要是不可能的三角(效率-公平-安全)的问题,大部分区块链解决方案都考虑以公平、安全为主,牺牲一定的安全,但运营商由于其网络优势,尤其5G大力建设以来,仍可在此基础上尽可能的提高效率。因此,在5G网络基础设施条件下,将区域链与云原生相结合,应可以解决跨公司协同,共同打造云原生生态链的问题。在实现方面,主要有以下思考:


(1)建立云化OS,目前的OS主要都是基于Linux,虽然可配置,但一定要包含最小化的Linux内核,不适合异常灵活云化基础设施,因此,可打造微内核的云化操作系统作为OS方面的基础设施。


(2)在OS的组件部署和上层应用全部映射为区块链的合约体系,所有访问修改全部追踪可查,从而保证信任方面的安全。


(3)在基础设施部署方面,使用联盟链的授权节点方式部署,保证只有有相关权限的企业才可操作,且所有操作对相关企业透明。


(4)区块链的信息通信可在运营商各主要节点中部署边缘云进行加速,提供边缘计算资源管理、终端设备(网关)管理、数据管理、业务可视化编排、策略管理、告警及事件管理。


六、云原生调度系统的智能化


随着系统负载类型和集群规模的不断扩大,要求云原生调度系统提升资源的使用效率,并能够对不同类型应用(如AI、大数据、HPC)、异构硬件资源(如GPU、TPU)和多个云环境进行统一智能化调度:


离、在线应用的统一调度:越来越多的批量计算任务迁移至云原生环境中执行,从HPC到大数据再到人工智能,早期每种场景中的分布式系统多为专有系统。在批量计算任务向云原生环境迁移的过程中,需要云原生调度系统能够支持各种场景的批量计算任务,并能够与微服务应用共享云原生环境和资源,这就需要云原生调度系统要能够同时支持微服务类应用(在线)和批量计算任务(离线)共享资源,以达到多种应用统一调度的要求。


异构硬件的统一调度:为了应对多种应用对资源适用场景的多元需求,需要云原生调度系统能够对异构硬件资源进行统一的管理与调度,使用各种应用达到最优的资源配比。


云原生环境的多样化使得资源和作业调度更加困难,随着人工智能等新技术的发展,可联合研究借助作业画像等AI技术预判资源的使用量,并以此为依据对资源进行动态扩缩容、动态超分,以优化复杂环境下的资源和作业调度方案。


 — end —


作者:IT学部-黎伟健


往期精彩内容,戳我

· 面向5G新应用的压力测试工具快速开发与部署实践

· 园区智简5G行业网打造华北最大虚拟现实体验中心

· 坚持改革创新 推进高质量发展——中国移动企业改革三年行动工作成效显现


更多精彩视频


手术机器人

会化学=会魔法

据说每一个点【在看】的人都收获了好运👇

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存